package br.com.beautycenter.view;

import br.com.beautycenter.DAO.PersisteCliente;
import br.com.beautycenter.DAO.PersisteRecebimentoExtra;
import br.com.beautycenter.DAO.PersisteSessao;
import br.com.beautycenter.Funcionalidades.Swing;
import br.com.beautycenter.Funcionalidades.Validacoes;
import br.com.beautycenter.bean.Cliente;
import br.com.beautycenter.bean.RecebimentoExtraCaixa;
import br.com.beautycenter.bean.Sessao;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.JOptionPane;

public class CadastroRecebimentoExtra extends javax.swing.JFrame {

    //constantes para o case dos botões
    final int NOVO_EDITAR = 0;

    PersisteCliente persisteCliente = new PersisteCliente();
    PersisteRecebimentoExtra persisteRecebimento = new PersisteRecebimentoExtra();
    PersisteSessao persisteSessao = new PersisteSessao();
    
    //lista que conterá as sessões cuja do cliente selecionado e na data selecionada
    List<Sessao> listaSessoes = new ArrayList<Sessao>();
    
    //lista que conterá os clientes que estão no combobox. Ajuda a toda hora não estar pesquisando por apenas 1 no banco
    List<Cliente> listaClientes = persisteCliente.retornarClientesAtivos();
    
    //lista com todos os recebimentos extras
    List<RecebimentoExtraCaixa> listaRecebimentos = persisteRecebimento.retornarRecebimentosExtras();
    
    //recebimento extra atual
    RecebimentoExtraCaixa recebimento = new RecebimentoExtraCaixa();
    
    //cliente selecionado no combobox
    Cliente cliente = new Cliente();
    
    //define qual é o item atual a ser editado
    int posicao = -1;
    
    /**
     * Preenche o combo cliente com todos os clientes
     * 
     * Futuramente isso deve ser alterado para todos os clientes ativos
     */
    public void preencherComboCliente(){
        jCCliente.removeAllItems(); //limpa o combo
        jCCliente.addItem("Selecione um cliente...");
        listaClientes = persisteCliente.retornarClientesAtivos();
        
        for(Cliente item: listaClientes){
            jCCliente.addItem(item.getNome());
        }
    }
    
    /**
     * Preenche o combo com cada sessão do dia 
     * @param cliente
     * @param dataSessao
     * 
     * @return 
     */
    public boolean preencherComboSessao(Cliente cliente, Date dataSessao){
        listaSessoes = persisteSessao.retornarSessoesPelaDataCliente(cliente, dataSessao);
        jCSessao.removeAllItems();
        
        //se não tiver sessões do cliente na data desejada, então não ativa o campo
        if(listaSessoes.isEmpty()){    
            jCSessao.setEnabled(false);
            return false;
        }else{
            jCSessao.addItem("Selecione a sessão desejada");
            /**
             * O combo ficará no formato: 
             * 
             * número da sessão - Tratamento - Valor da Sessão
             * 
             * ex.: 1 - Massagem Corporal - 200,00
             */
            for(Sessao item: listaSessoes){
                jCSessao.addItem(String.valueOf(item.getNumeroSessao()) + " - " + item.getTratamento().getNomeTratamento() 
                        + " - " + Validacoes.formatoMoeda.format(item.getValorSessao()));
            }
            jCSessao.setEnabled(true);
            
            return true;
        }
    }
    
    /**
     * através do parametro opção, ativa os botões de acordo com a funcionalidade desejada
     * @param opcao 
     */
    public void definirBotoesAtivos(int opcao){
        switch(opcao){
            case NOVO_EDITAR:
                btnNovo.setEnabled(false);
                btnEditar.setEnabled(false);
                btnExcluir.setEnabled(false);
                btnPesquisar.setEnabled(false);
                btnSalvar.setEnabled(true);
                btnCancelar.setEnabled(true);
                btnSair.setEnabled(true);
                break;
            default:
                /**
                * Se não tiver recebimentos extras cadastrados, ativa os seguintes botões:
                * Novo
                * Salvar
                * Sair
                * 
                * Se tiver alguem na lista, ativa apenas o novo e sair
                */
               if(listaRecebimentos.isEmpty()){
                   btnNovo.setEnabled(true);
                   btnEditar.setEnabled(false);
                   btnExcluir.setEnabled(false);
                   btnPesquisar.setEnabled(false);
                   btnSalvar.setEnabled(false);
                   btnCancelar.setEnabled(false);
                   btnSair.setEnabled(true);
               }else{
                   btnNovo.setEnabled(true);
                   btnEditar.setEnabled(false);
                   btnExcluir.setEnabled(false);
                   btnPesquisar.setEnabled(false);
                   btnSalvar.setEnabled(false);
                   btnCancelar.setEnabled(false);
                   btnSair.setEnabled(true);
               }
                
        }
    }
    
    public void limparCampos(){
        Swing.zerarCampos(jPSessao.getComponents());
        Swing.zerarCampos(jPCadastro.getComponents());
        
        jDDataSessao.setDate(new Date());
    }
    
    public void inicializarTela(){
        
        limparCampos();
        posicao = -1;
        
        //preenche o combo cliente
        preencherComboCliente();
        
        //insere a data atual nos campos dada
        jDDataCadastro.setDate(new Date());
        jDDataSessao.setDate(new Date());
        
        //ativo os botões caso não seja feita nenhum ação
        definirBotoesAtivos(-1);
        
        //desativa todos os campos
        Swing.desativarCampos(jPSessao.getComponents());
        Swing.desativarCampos(jPCadastro.getComponents());
    }
    
    /**
     * Pesquisa pelo id da sessão na lista de sessões
     * @param sessao
     * @return 
     */
    public int pesquisarSessaoNaLista(Sessao sessao){
        for(int i=0; i<listaSessoes.size(); i++){
            if(listaSessoes.get(i).getIdSessao() == sessao.getIdSessao()) return i; //retorna a posição na lista
        }
        
        return -1; //retorna -1 se houver erro. O que não deve acontecer
    }
    
    public int pesquisarClienteNaLista(Cliente cliente){
        for(int i=0; i<listaClientes.size(); i++){
            if(listaClientes.get(i).getIdPessoa() == cliente.getIdPessoa()) return i; //retorna a posição na lista
        }
        
        return -1; //retorna -1 se houver erro. O que não deve acontecer
    }
    
    /**
     * Verifica se algum cliente foi selecionado no combo
     * @return 
     */
    public boolean validarCliente(){
        if(jCCliente.getSelectedIndex() > 0){
            cliente = listaClientes.get(jCCliente.getSelectedIndex()-1);
            return true;
        }
        return false;
    }
    
    /**
     * Executa essa ação ao clicar no botão pesquisar Sessão
     */
    public void pesquisarSessao(){
        if(!validarCliente()){
            JOptionPane.showMessageDialog(null, "Selecione um cliente.");
        }else if(jDDataSessao.getDate() == null){
            JOptionPane.showMessageDialog(null, "Selecione uma data.");
        }else{
            //verifica se tem algum sessão do cliente na data selecionada
            if(!preencherComboSessao(cliente, jDDataSessao.getDate())){
                JOptionPane.showMessageDialog(null, "Não há sessões do cliente na data informada.");
            }
        }
    }
    
    public void novo(){
        Swing.ativarCampos(jPSessao.getComponents()); 
        jCSessao.setEnabled(false);
        definirBotoesAtivos(NOVO_EDITAR);
    }
    
    public void editar(){
        Swing.ativarCampos(jPSessao.getComponents());
        
        recebimento = listaRecebimentos.get(posicao);
        jCCliente.setSelectedIndex(pesquisarClienteNaLista(recebimento.getCliente())+1);
        jDDataSessao.setDate(recebimento.getSessao().getDtSessao());
        
        pesquisarSessao();
        
        jCSessao.setSelectedIndex(pesquisarSessaoNaLista(recebimento.getSessao())+1);
    }
    
    public void excluir(){
        recebimento = listaRecebimentos.remove(posicao); //retira da lista
        persisteRecebimento.deletar(recebimento); //retira do banco de dados
        
        posicao = -1; //volta posição para o inicio da lista
        inicializarTela();
    }
    
    public void pesquisar(){
        //criar depois
    }

    public void salvar(){
        Double valorCadastro = null;
        if(txtValorCadastro.isEnabled() && 
                (valorCadastro = Validacoes.validarCampoMoeda(txtValorCadastro.getText().trim())) != null){
            
            recebimento = new RecebimentoExtraCaixa();
            recebimento.setIdRecebimentoExtraCaixa(0);
            recebimento.setCliente(listaClientes.get(jCCliente.getSelectedIndex()-1)); //pega o cliente do combo
            recebimento.setDtCadastro(jDDataCadastro.getDate()); //data de cadastro
            recebimento.setValorRecebimento(valorCadastro); //valor informado
            recebimento.setSessao(listaSessoes.get(jCSessao.getSelectedIndex()-1)); //sessão selecionada
            
            persisteRecebimento.salvar(recebimento);
            cliente.setCredito(cliente.getCredito() + recebimento.getValorRecebimento());
            
            inicializarTela();
                    
        }else{
            JOptionPane.showMessageDialog(null, "Preencha os dados corretamente.");
        }
    }
    
    public void cancelar(){
        //se posicao > -1 indica eu pegou alguem pra editar
        
        if(posicao > -1){
            Swing.ativarCampos(jPSessao.getComponents());
            Swing.desativarCampos(jPCadastro.getComponents());
        }else{
            inicializarTela();
        }
    }
    
    public void sair(){
        dispose();
    }
    
    public void confirmar(){
        if(jCSessao.isEnabled() && jCSessao.getSelectedIndex() > 0){
            Swing.ativarCampos(jPCadastro.getComponents()); //ativa o panel de cadastro
            
            txtValorSessao.setText(
                    Validacoes.formatoMoeda.format(
                            listaSessoes.get(jCSessao.getSelectedIndex()-1).getValorSessao()
                    )
            );
            
            txtValorSessao.setEditable(false);
        }
    }

    public CadastroRecebimentoExtra() {
        initComponents();
        inicializarTela();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanelBotoes = new javax.swing.JPanel();
        btnNovo = new javax.swing.JButton();
        btnEditar = new javax.swing.JButton();
        btnExcluir = new javax.swing.JButton();
        btnPesquisar = new javax.swing.JButton();
        btnSalvar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();
        btnSair = new javax.swing.JButton();
        jPCadastro = new javax.swing.JPanel();
        jLabelData = new javax.swing.JLabel();
        jDDataCadastro = new com.toedter.calendar.JDateChooser();
        jLabelValorSessao = new javax.swing.JLabel();
        txtValorSessao = new javax.swing.JTextField();
        txtValorCadastro = new javax.swing.JTextField();
        jLabelValorPago = new javax.swing.JLabel();
        jPSessao = new javax.swing.JPanel();
        jLabelCliente = new javax.swing.JLabel();
        jCCliente = new javax.swing.JComboBox();
        jDDataSessao = new com.toedter.calendar.JDateChooser();
        jLabelDataSessao = new javax.swing.JLabel();
        jCSessao = new javax.swing.JComboBox();
        jLabelSessao = new javax.swing.JLabel();
        jSeparator1 = new javax.swing.JSeparator();
        btnPesquisarSessoes = new javax.swing.JButton();
        btnConfirmar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("ERP BEAUTY CENTER - Cadastro de Recebimentos Extras");
        setBackground(new java.awt.Color(255, 255, 255));

        jPanelBotoes.setPreferredSize(new java.awt.Dimension(800, 45));

        btnNovo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/beautycenter/img/Novo.png"))); // NOI18N
        btnNovo.setToolTipText("NOVO");
        btnNovo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNovoActionPerformed(evt);
            }
        });

        btnEditar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/beautycenter/img/Editar.png"))); // NOI18N
        btnEditar.setToolTipText("ALTERAR");
        btnEditar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEditarActionPerformed(evt);
            }
        });

        btnExcluir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/beautycenter/img/Excluir.png"))); // NOI18N
        btnExcluir.setToolTipText("EXCLUIR");
        btnExcluir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnExcluirActionPerformed(evt);
            }
        });

        btnPesquisar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/beautycenter/img/Pesquisar.png"))); // NOI18N
        btnPesquisar.setToolTipText("PESQUISAR");
        btnPesquisar.setBorderPainted(false);
        btnPesquisar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnPesquisarActionPerformed(evt);
            }
        });

        btnSalvar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/beautycenter/img/Salvar.png"))); // NOI18N
        btnSalvar.setToolTipText("SALVAR");
        btnSalvar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSalvarActionPerformed(evt);
            }
        });

        btnCancelar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/beautycenter/img/Cancelar.png"))); // NOI18N
        btnCancelar.setToolTipText("LIMPAR");
        btnCancelar.setPreferredSize(new java.awt.Dimension(65, 40));
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });

        btnSair.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/beautycenter/img/Sair.png"))); // NOI18N
        btnSair.setToolTipText("SAIR");
        btnSair.setPreferredSize(new java.awt.Dimension(65, 40));
        btnSair.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSairActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanelBotoesLayout = new javax.swing.GroupLayout(jPanelBotoes);
        jPanelBotoes.setLayout(jPanelBotoesLayout);
        jPanelBotoesLayout.setHorizontalGroup(
            jPanelBotoesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelBotoesLayout.createSequentialGroup()
                .addGap(149, 149, 149)
                .addComponent(btnNovo)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnEditar)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnExcluir)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnPesquisar)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnSalvar)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnSair, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanelBotoesLayout.setVerticalGroup(
            jPanelBotoesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelBotoesLayout.createSequentialGroup()
                .addGroup(jPanelBotoesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(btnNovo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnEditar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnExcluir, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnPesquisar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnSalvar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnCancelar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnSair, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );

        jPCadastro.setBackground(new java.awt.Color(255, 255, 255));
        jPCadastro.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Dados do cadastro", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION));

        jLabelData.setText("Data");

        jLabelValorSessao.setText("Valor da Sessão");

        jLabelValorPago.setText("Valor Pago");

        javax.swing.GroupLayout jPCadastroLayout = new javax.swing.GroupLayout(jPCadastro);
        jPCadastro.setLayout(jPCadastroLayout);
        jPCadastroLayout.setHorizontalGroup(
            jPCadastroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPCadastroLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabelData)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jDDataCadastro, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jLabelValorPago)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtValorCadastro, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jLabelValorSessao)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtValorSessao, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPCadastroLayout.setVerticalGroup(
            jPCadastroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPCadastroLayout.createSequentialGroup()
                .addGap(2, 2, 2)
                .addGroup(jPCadastroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPCadastroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPCadastroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabelValorPago)
                            .addComponent(txtValorCadastro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGroup(jPCadastroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabelValorSessao)
                            .addComponent(txtValorSessao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(jPCadastroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addComponent(jDDataCadastro, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jLabelData, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addGap(0, 11, Short.MAX_VALUE))
        );

        jPSessao.setBackground(new java.awt.Color(255, 255, 255));
        jPSessao.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Referente à Sessão", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION));

        jLabelCliente.setText("Cliente");

        jLabelDataSessao.setText("Data da Sessão");

        jLabelSessao.setText("Sessão");

        btnPesquisarSessoes.setText("Pesquisar Sessões");
        btnPesquisarSessoes.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnPesquisarSessoesActionPerformed(evt);
            }
        });

        btnConfirmar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/beautycenter/img/Selecionar.png"))); // NOI18N
        btnConfirmar.setText("Confirmar");
        btnConfirmar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnConfirmarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPSessaoLayout = new javax.swing.GroupLayout(jPSessao);
        jPSessao.setLayout(jPSessaoLayout);
        jPSessaoLayout.setHorizontalGroup(
            jPSessaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPSessaoLayout.createSequentialGroup()
                .addComponent(jLabelCliente)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCCliente, javax.swing.GroupLayout.PREFERRED_SIZE, 385, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jLabelDataSessao)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jDDataSessao, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(btnPesquisarSessoes)
                .addGap(0, 16, Short.MAX_VALUE))
            .addGroup(jPSessaoLayout.createSequentialGroup()
                .addComponent(jLabelSessao)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCSessao, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGap(18, 18, 18)
                .addComponent(btnConfirmar, javax.swing.GroupLayout.PREFERRED_SIZE, 124, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(164, 164, 164))
            .addComponent(jSeparator1)
        );
        jPSessaoLayout.setVerticalGroup(
            jPSessaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPSessaoLayout.createSequentialGroup()
                .addGroup(jPSessaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPSessaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabelCliente)
                        .addComponent(jCCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPSessaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addComponent(jDDataSessao, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jLabelDataSessao, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(btnPesquisarSessoes, javax.swing.GroupLayout.Alignment.TRAILING))
                .addGap(7, 7, 7)
                .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPSessaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelSessao)
                    .addComponent(jCSessao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnConfirmar, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanelBotoes, javax.swing.GroupLayout.DEFAULT_SIZE, 802, Short.MAX_VALUE)
            .addComponent(jPCadastro, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jPSessao, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanelBotoes, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jPSessao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jPCadastro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnNovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNovoActionPerformed
        novo();
    }//GEN-LAST:event_btnNovoActionPerformed

    private void btnEditarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEditarActionPerformed
        editar();
    }//GEN-LAST:event_btnEditarActionPerformed

    private void btnExcluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExcluirActionPerformed
        excluir();
    }//GEN-LAST:event_btnExcluirActionPerformed

    private void btnPesquisarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPesquisarActionPerformed
        pesquisar();
    }//GEN-LAST:event_btnPesquisarActionPerformed

    private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSalvarActionPerformed
        salvar();
    }//GEN-LAST:event_btnSalvarActionPerformed

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
        cancelar();
    }//GEN-LAST:event_btnCancelarActionPerformed

    private void btnSairActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSairActionPerformed
        sair();
    }//GEN-LAST:event_btnSairActionPerformed

    private void btnPesquisarSessoesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPesquisarSessoesActionPerformed
        pesquisarSessao();
    }//GEN-LAST:event_btnPesquisarSessoesActionPerformed

    private void btnConfirmarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnConfirmarActionPerformed
        confirmar();
    }//GEN-LAST:event_btnConfirmarActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnConfirmar;
    private javax.swing.JButton btnEditar;
    private javax.swing.JButton btnExcluir;
    private javax.swing.JButton btnNovo;
    private javax.swing.JButton btnPesquisar;
    private javax.swing.JButton btnPesquisarSessoes;
    private javax.swing.JButton btnSair;
    private javax.swing.JButton btnSalvar;
    private javax.swing.JComboBox jCCliente;
    private javax.swing.JComboBox jCSessao;
    private com.toedter.calendar.JDateChooser jDDataCadastro;
    private com.toedter.calendar.JDateChooser jDDataSessao;
    private javax.swing.JLabel jLabelCliente;
    private javax.swing.JLabel jLabelData;
    private javax.swing.JLabel jLabelDataSessao;
    private javax.swing.JLabel jLabelSessao;
    private javax.swing.JLabel jLabelValorPago;
    private javax.swing.JLabel jLabelValorSessao;
    private javax.swing.JPanel jPCadastro;
    private javax.swing.JPanel jPSessao;
    private javax.swing.JPanel jPanelBotoes;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JTextField txtValorCadastro;
    private javax.swing.JTextField txtValorSessao;
    // End of variables declaration//GEN-END:variables
}